package com.utiles.scrolls
{
	import com.hexagonstar.util.debug.Debug;
	
	import flash.display.DisplayObject;
	import flash.display.Graphics;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Rectangle;
	
	import gs.TweenMax;
	

	public class ScrollHorizontal extends Sprite
	{
		private var texto:Sprite;
		private var anchura;
		private var contenedor:Sprite;
		private var porcentajeCampo:Number;
		private var _tiempoTween:Number;
		private var gr:Graphics;
		private var barra:Sprite;
		private var tirador:Sprite;
		private var mascara:Sprite;
		
				
		public function ScrollHorizontal(_texto:Sprite, _anchura:Number = 200, tiempoTween:Number = 0)
		{
			Debug.trace('holaaaa');
			
			anchura = _anchura;
			texto = _texto;
			tiempoTween = _tiempoTween;
			
			// contenedor para almacenar el texto
			contenedor = new Sprite();
			addChild(contenedor);
			// le añado el TEXTO
			contenedor.addChild(texto);
			// creo MASCARA
			mascara = new Sprite();
			gr = mascara.graphics;
			gr.beginFill(0);
			gr.drawRect(texto.x, texto.y, anchura, texto.height);
			gr.endFill();
			addChild(mascara);
			// enmascaro el CONTENEDOR
			contenedor.mask = mascara;
			// creo el SCROLL
			crearScroll();
		}
		
		private function crearScroll ():void {
			// creo la BARRA
			barra = new Sprite();
			barra.y = int((texto.y + texto.height) + 20);
			barra.x = int(texto.x);
			gr = barra.graphics;
			gr.beginFill(0x777777);
			gr.drawRect(0,-1.5,anchura, 3);
			gr.endFill();
			barra.addEventListener(MouseEvent.CLICK, clicBarra);
			addChild(barra);
			// creo el TIRADOR
			porcentajeCampo = mascara.width/texto.width;
			var alturaTirador:Number = barra.width * porcentajeCampo;
			if(alturaTirador < 9){
				alturaTirador = 9
			}
			tirador = new Sprite();
			tirador.buttonMode = true;
			gr = tirador.graphics;
			gr.beginFill(0xFFFFFF);
			gr.drawRect(0,-4.5,alturaTirador,9);
			gr.endFill();
			tirador.x = barra.x;
			tirador.y = barra.y;
			tirador.addEventListener(MouseEvent.MOUSE_DOWN, downTirador);
			//addChild(tirador);
			
			
			Debug.inspect(barra);
			Debug.inspect(tirador);
		}
		
		private function downTirador (e:MouseEvent):void {
			tirador.startDrag(false, new Rectangle(barra.x,barra.y,(barra.width - tirador.width),0));
			this.stage.addEventListener(MouseEvent.MOUSE_UP, upTirador);
			this.stage.addEventListener(MouseEvent.MOUSE_MOVE, loop);
		}
		
		private function upTirador (e:MouseEvent):void {
			this.stage..removeEventListener(MouseEvent.MOUSE_MOVE, loop);
			this.stage.removeEventListener(MouseEvent.MOUSE_UP, upTirador);
			tirador.stopDrag();
			TweenMax.to(contenedor, _tiempoTween, {x:-((tirador.x - barra.x) / (porcentajeCampo))});
			//_blur = valor_blur;
		}
		
		private function loop (e:Event=null):void {
			// muevo el CONTENEDOR
			//_blur += 0.1;
			TweenMax.to(contenedor, _tiempoTween, {y:-((tirador.x - barra.x) / (porcentajeCampo))});
		}
		
		private function clicBarra (e:MouseEvent):void {
			tirador.x = e.localX;
		}
		
		
	}
}